package handlers;

import java.util.ArrayList;

import dataType.ContornoHoja;
import figuras.BSplines;
import figuras.PuntoVector;

public class BSplinesHandler {
	
	private ArrayList<PuntoVector> puntosIntroducidos;
	private ArrayList<PuntoVector> puntosControlSpline;	
	private ArrayList<BSplines> bsplines;
	private int puntoModificado;
	private PuntoVector pMouse;
	private boolean pinta;// para ver si ha terminado de meter el stroke o no
	private int maxSplines;
	private ContornoHoja contornoHoja;
	
	public BSplinesHandler(){
		this.puntosIntroducidos = new ArrayList<PuntoVector>();
		this.puntosControlSpline = new ArrayList<PuntoVector>();
		this.bsplines = new ArrayList<BSplines>();
		this.puntoModificado = -1;
		this.pMouse = null;
		this.pinta = true;
		this.maxSplines=3;
		this.contornoHoja=new ContornoHoja(); 
	}

	public ArrayList<PuntoVector> getPuntosIntroducidos() {
		return puntosIntroducidos;
	}

	public void setPuntosIntroducidos(ArrayList<PuntoVector> puntosIntroducidos) {
		this.puntosIntroducidos = puntosIntroducidos;
	}

	public ArrayList<PuntoVector> getPuntosControlSpline() {
		return puntosControlSpline;
	}

	public void setPuntosControlSpline(ArrayList<PuntoVector> puntosControlSpline) {
		this.puntosControlSpline = puntosControlSpline;
	}

	public ArrayList<BSplines> getBsplines() {
		return bsplines;
	}

	public void setBsplines(ArrayList<BSplines> bsplines) {
		this.bsplines = bsplines;
	}

	public int getPuntoModificado() {
		return puntoModificado;
	}

	public void setPuntoModificado(int puntoModificado) {
		this.puntoModificado = puntoModificado;
	}

	public PuntoVector getPMouse() {
		return pMouse;
	}

	public void setPMouse(PuntoVector mouse) {
		pMouse = mouse;
	}

	public boolean isPinta() {
		return pinta;
	}

	public void setPinta(boolean pinta) {
		this.pinta = pinta;
	}

	public int getMaxSplines() {
		return maxSplines;
	}

	public void setMaxSplines(int maxSplines) {
		this.maxSplines = maxSplines;
	}

	public ContornoHoja getContornoHoja() {
		if (this.bsplines.size()==this.maxSplines){
			for (BSplines b:this.bsplines){
				contornoHoja.getContornoHoja().add(b.getPerfil());
			}
		}
		return contornoHoja;
	}

	public void setContornoHoja(ContornoHoja contornoHoja) {
		this.contornoHoja = contornoHoja;
	}
	
	public void limpiaCurvas() {
		this.setPuntosIntroducidos(new ArrayList<PuntoVector>());
		this.getPuntosControlSpline().clear();
		this.setPinta(true);
		this.getBsplines().clear();
	}

	public void addSpline() {
		this.setPuntosIntroducidos(new ArrayList<PuntoVector>());
		this.getPuntosControlSpline().clear();
	}

}
